package com.hmall;

import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.io.IOException;

@SpringBootTest
public class test {

    @Autowired(required = false)
    RestHighLevelClient highLevelClient;

   /* @Test
    public void testBulkRrquest() throws IOException {
        //1.调用 hotelMapper 查询所有数据返回集合 List<Hotel>
        List<Hotel> hotelList = hotelMapper.selectList(null);
        //2.判断集合是否不为空，工具类 CollectionUtils.isNotEmpty(集合)
        // 工具类： CollectionUtils.isNotEmpty(集合)
        // 注意： 这里引入的是 MP中的CollectionUtils 工具类
        if (CollectionUtils.isNotEmpty(hotelList)) {

            //3.创建批量操作请求对象 BulkRequest
            BulkRequest bulkRequest = new BulkRequest();

            //4.遍历 List<Hotel> 集合每元素数据
            for (Hotel hotel : hotelList) {
                //4.1.将每个 hotel 对象封装层 hotelDoc 对象
                HotelDoc hotelDoc = new HotelDoc(hotel);
                //4.2 根据hotelDoc对象数据，构建添添加文档数据的请求对象 IndexRequest 对象
                //    本质：构建每个数据的添加文档命令，格式为: POST 索引库名/_doc
                IndexRequest request = new IndexRequest("hotel").id(hotelDoc.getId().toString());
                //4.3 将 hotelDoc 对象转换为json字符串，并通过request对象source方法封装json数据
                //    本质：构建每个数据的添加文档命令，格式为: POST 索引库名/_doc{文档数据}
                String json = objectMapper.writeValueAsString(hotelDoc);
                request.source(json, XContentType.JSON);
                //4.4 将请求对象 IndexRequest(每个添加文档命令) 添加到批量操作请求对象 BulkRequest 中
                bulkRequest.add(request);
            }
            //5.批量执行添加命令
            highLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
        }
    }
*/
}